package com.kang.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.kang.pojo.PurchaseOrder;
import com.vonechina.entity.page.PurchaseOrderPage;

/**
 * 采购订单控制层
 * 
 * @author zs614
 *
 */
public interface PurchaseOrderMapper {
	/**
	 * 查询采购订单最大编号
	 * 
	 * @return
	 */
	public String selectMaxOrder();

	/**
	 * 新增采购订单
	 * 
	 * @param record
	 *            采购订单
	 * @return
	 */
	public Integer insertOrder(PurchaseOrder record);

	/**
	 * 分页查询采购订单
	 * 
	 * @param page
	 *            分页查询条件实体类
	 * @return
	 */
	public List<PurchaseOrder> listPurchaseOrder(PurchaseOrderPage page);

	/**
	 * 查询采购订单数量
	 * 
	 * @param page
	 *            分页查询条件实体类
	 * @return
	 */
	public Integer countPurchaseOrder(PurchaseOrderPage page);

	/**
	 * 删除采购订单
	 * 
	 * @param purchaseOrderID
	 * @return
	 */
	public Integer deleteOrder(Integer purchaseOrderID);

	/**
	 * 提交采购订单
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @param submitterID
	 *            提交人ID
	 * @return
	 */
	public Integer submitOrder(@Param("purchaseOrderID") Integer purchaseOrderID,
			@Param("submitterID") Integer submitterID);

	/**
	 * 根据ID查询采购订单
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @return
	 */
	public PurchaseOrder selectOrderById(Integer purchaseOrderID);

	/**
	 * 更新采购订单
	 * 
	 * @param order
	 *            采购订单实体类
	 * @return
	 */
	public Integer updateOrder(PurchaseOrder order);

	/**
	 * 更新采购订单状态
	 * 
	 * @param purchaseOrderID
	 *            采购订单ID
	 * @param status
	 *            采购订单状态
	 * @return
	 */
	public Integer updateStatus(@Param("purchaseOrderID") Integer purchaseOrderID, @Param("status") Integer status);

	/**
	 * 结算采购订单
	 * 
	 * @param order
	 *            采购订单实体类
	 * @return
	 */
	public Integer settleOrder(PurchaseOrder order);

	/**
	 * 查询采购订单表，用在采购入库添加订单
	 * 
	 * @param page
	 *            分页查询条件实体类
	 * @return
	 */
	public List<PurchaseOrder> listPurchaseOrder2(PurchaseOrderPage page);

	/**
	 * 查询采购订单表总条数，用在采购入库添加订单
	 * 
	 * @param page
	 *            分页查询条件实体类
	 * @return
	 */
	public Integer countPurchaseOrder2(PurchaseOrderPage page);

	/**
	 * 根据采购入库的id查询出sourceID，根据sourceID查询出采购订单
	 * 
	 * @param id
	 *            物品来源ID
	 * @return
	 */
	public PurchaseOrder selectOrderById2(Integer id);
}